Serialization is the process of converting an element in memory into a sequence of bits so that it can be stored (such as in a file or a buffer) or transmitted across a network. When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original element.
The problem with serializing a linked data structure is in storing pointer references. When the operating system attempts to restore the serialized data, it will place elements in currently unused sections of memory, which are extremely unlikely to be the same sections the elements occupied when the data was stored. Therefore, those references to specific locations in memory will no longer be valid.
The common solution to this problem is known as pointer swizzling. When a pointer is unswizzled, it is replaced by a position-independent symbol in the serialization process. Swizzling, the opposite function, is the conversion of the position-independent symbol back to a direct pointer reference during deserialization.